Next: Style Variables, Previous: Config Basics, Up: Config Basics [Contents][Index]
CC Mode provides several hooks that you can use to customize
the mode for your coding style. The main hook is
c-mode-common-hook; typically, you’ll put the
bulk of your customizations here. In addition, each language mode
has its own hook, allowing you to fine tune your settings
individually for the different CC Mode languages, and there is a
package initialization hook. Finally, there is
c-special-indent-hook, which enables you to solve
anomalous indentation problems. It is described in Other Indentation,
not here. All these hooks adhere to the standard Emacs
conventions.
When you open a buffer, CC Mode first initializes it with the
currently active style (see Styles). Then it calls
c-mode-common-hook, and finally it calls the
language-specific hook. Thus, any style settings done in these
hooks will override those set by
c-default-style.
Hook run only once per Emacs session, when CC Mode is initialized. This is a good place to change key bindings (or add new ones) in any of the CC Mode key maps. See Sample Init File.
Common hook across all languages. It’s run immediately before the language specific hook.
The language specific mode hooks. The appropriate one is run as the last thing when you enter that language mode.
Although these hooks are variables defined in CC Mode, you can
give them values before CC Mode’s code is
loaded—indeed, this is the only way to use
c-initialization-hook. Their values aren’t
overwritten when CC Mode gets loaded.
Here’s a simplified example of what you can add to your .emacs file to do things whenever any CC Mode language is edited. See the Emacs manuals for more information on customizing Emacs via hooks. See Sample Init File, for a more complete sample .emacs file.
(defun my-c-mode-common-hook () ;; my customizations for all of c-mode and related modes (no-case-fold-search) ) (add-hook 'c-mode-common-hook 'my-c-mode-common-hook)
Next: Style Variables, Previous: Config Basics, Up: Config Basics [Contents][Index]